$(function () { //加载表格
    $('#dg').datagrid({
        loadMsg: '数据加载中，请稍后...',
        url: system + '/userInfo/listInfo',
        pagination: true,
        singleSelect: false,//如果为true，则只允许选择一行。
        title: "用户信息列表",
        pageSize: pageSize,
        pageList: pageList,
        checkOnSelect: true,//当用户点击行的时候该复选框就会被选中或取消选中。
        striped: true,//是否显示斑马线效果。
        rownumbers: true,// 显示一个行号列
        fitColumns: false,//真正的自动展开/收缩列的大小，以适应网格的宽度，防止水平滚动。
        columns: [
            [{field: 'itemid', title: 'Order ID', width: 80, checkbox: true},
                {field: 'loginId', title: '登录名'},
                {field: 'name', title: '用户姓名'},
                {
                    field: 'sex', title: '性别',
                    formatter: function (value, row, index) {
                        if (1 == value) {
                            return '男';
                        } else {
                            return "女";
                        }
                    }
                },
                {field: 'phone', title: '手机号码'},
                {field: 'email', title: '邮箱地址'},
                {field: 'strOrgName', title: '所属机构'},
                {field: 'strStatus', title: '状态'},
                {field: 'lastModify', title: '最后更新人'},
                {field: 'lastModifyTime', title: '最后更新时间'},
                {field: 'lastLoginTime', title: '最后登录时间'},
                {
                    field: 'isLock', title: '是否锁定',
                    formatter: function (value, row, index) {
                        if (1 == value) {
                            return "是";
                        } else if (2 == value) {
                            return "否";
                        }
                    }
                },
                {field: 'lockTime', title: '锁定时间'}
            ]],
        loadFilter: function (data) { //加载后台数据
            if (successcode != data.code) {
                return errorHandle(data);
            }
            return data.data;
        },
        //双击事件
        onDblClickRow: function (rowIndex, rowData) {
            viewUser(rowData)
        }
    }).datagrid("columnMoving");;
    initData();
})

// 初始化加载下拉框的值
function initData() {
    $.ajax({
            type: "post",
            url: system + "/userInfo/init",
            success: function (data) {
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                var listOrganization = data.data.listOrganization;
                var sysStatus = data.data.sysStatus;
                if (!isNull(listOrganization)) {
                    // 两种方式加载，不然会次选第一个的不能选择
                    $("#orgId").combotree("loadData", listOrganization);
                    $('#selOrgId').combotree({data: listOrganization});
                }
                if (!isNull(sysStatus)) {
                    sysStatus.unshift({"showmsg": "==全部==", "value": ''});
                    $("#selStatus").combobox({data: sysStatus});
                }
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

//搜索的方法
function doSearch() {
    var queryParams = $("#dg").datagrid("options").queryParams;
    queryParams["loginId"] = $("#loginId").val();
    queryParams["name"] = $("#name").val();
    queryParams["strStatus"] = getCommboxValue("selStatus")
    queryParams["strOrgName"] = getCommbotreeValue("selOrgId");
    $("#dg").datagrid("options").queryParams = queryParams;
    $("#dg").datagrid("load");
}

//查看用户信息
function viewUser(rowData) {
    $('#myform').form('disableValidation');//清除验证样式
    $('#dlg').dialog({
        title: "查看用户信息",
        buttons: [{
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    $('#myform').form('load', rowData);//修改页面赋值
    if (!isNull(rowData.headSculpture)) {
        $("#img").attr("src", rowData.headSculpture);
    } else {
        $("#img").attr("src", "/img/pic_no.png");
    }
    $("img").attr("disabled", true);
}

//添加用户的方法
function addUser() {
    $("#myform").form('clear');//添加之前清空表达信息
    $('#myform').form('enableValidation');//设置验证样式
    $("#img").attr("src", "/img/pic_no.png");
    $('#dlg').dialog({
        title: "新增用户信息",
        buttons: [{
            text: '保存',
            iconCls: 'icon-save',
            handler: function () {
                saveItemUser(1);
            }
        }, {
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    $("input[type='radio']").eq(0).prop("checked", "checked");
    $("#img").attr("disabled", false);
    var root = $('#orgId').combotree('tree').tree('getRoot');
    $('#orgId').combotree('setValue', root.id);
}

//点击修改按钮事件
function editUser() {
    $('#myform').form('enableValidation');//设置验证样式
    var arr = $('#dg').datagrid('getSelections');
    if (null == arr || arr.length != 1) {
        $.messager.alert('系统提示', "请选择一行数据！", 'warning');
        return;
    }
    $('#dlg').dialog({
        title: "修改用户信息",
        buttons: [{
            text: '保存',
            iconCls: 'icon-save',
            handler: function () {
                saveItemUser(2);
            }
        }, {
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    $("#beforeOrganizationId").val(arr[0].orgId);//取到修改前的机构id
    $("input[name='loginIdFirst']").val(arr[0].loginId);
    $('#myform').form('load', arr[0]);//修改页面赋值
    if (!isNull(arr[0].headSculpture)) {
        $("#img").attr("src", arr[0].headSculpture);
    } else {
        $("#img").attr("src", "/img/pic_no.png");
    }

}

/**
 * 图片上传
 * @param fileName
 */
function setImagePreview(fileName) {
    //文件后缀格式
    if (!/\.(jpg|JPG|jpeg|JPEG|gif|GIF|png|PNG|bmp|BMP)$/.test(fileName)) {
        $.messager.alert('系统提示', '错误的类型，请选择图片', 'error');
        return;
    }
    $('#subimg').form('submit', {
        url: system + "/userInfo/image/upload",
        onSubmit: function (param) {
            param.oldImageId = $("input[name='headSculpture']").val();
            $.messager.progress({text: '正在处理中...'});
        }, success: function (data) {
            $.messager.progress('close');
            data = JSON.parse(data);
            if (successcode != data.code) {
                $("#uploadimg").val("");
                return errorHandle(data);
            }
            $("#img").attr("src", data.data);//图片上传成功的图片地址
            $("input[name='headSculpture']").val(data.data);
        }, error: function (data) {
            $("#uploadimg").val("");
            $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
        }
    });
}

//保存的方法
function saveItemUser(ftype) {
    //验证表单信息
    if (!$("#myform").form('validate')) {
        return;
    }
    var url = system + "/userInfo/editUser";
    var msg = "确定修改用户信息吗";
    if ($("#beforeOrganizationId").val() != $("#orgId").combotree("getValue")) {//取到以前的机构信息对比是否修改
        msg = "修改机构信息，将删除该用户在原机构拥有的角色，确定要修改吗?";
    }
    if (1 == ftype) {
        url = system + "/userInfo/addUser";
        msg = '确定保存用户信息吗？';
    }
    $.messager.confirm('系统提示', msg, function (param) {
        if (!param) {
            return;
        }
        $('#myform').form('submit', {
            url: url,
            onSubmit: function () {
                $.messager.progress({text: '正在处理中...',});
            }, success: function (data) {
                $.messager.progress('close');
                try {
                    data = JSON.parse(data);
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    //关闭弹出窗口
                    $('#dlg').dialog('close');
                    $.messager.show({title: '系统提示', msg: data.message});
                    $("#dg").datagrid("load");//刷新表格
                } catch (e) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        });

    });
}

//点击删除按钮事件
function delUser() {
    var arr = $('#dg').datagrid('getSelections');
    if (null == arr || arr.length == 0) {
        $.messager.alert('系统提示', "请选择你要删除的数据！", 'warning');
        return;
    }
    $.messager.confirm('系统提示', '确定要删除这' + arr.length + '条用户信息吗？', function (param) {
        if (!param) {
            return;
        }
        var ids = [];
        for (var i = 0; i < arr.length; i++) {
            ids.push(arr[i].id);
        }
        if (isNull(ids)) {
            return;
        }
        $.messager.progress({text: '正在处理中...',});
        $.ajax({
                type: "post",
                url: system + "/userInfo/delUser",
                dataType: "json",
                data: {
                    ids: JSON.stringify(ids)
                },
                success: function (data) {
                    $.messager.progress('close');
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    $("#dg").datagrid("load");//刷新表格
                    $.messager.show({title: '系统提示', msg: data.message});
                }, error: function (data) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        );

    });

}

//点击锁定或者解锁事件
function updateIsUse(falg) {
    var arr = $('#dg').datagrid('getSelections');
    var msg = "";
    var isLock = "";
    if ("2" == falg) {
        msg = "解锁";
        isLock = 2;
    } else if ("1" == falg) {
        msg = "锁定";
        isLock = 1;
    }
    if (null == arr || arr.length == 0) {
        $.messager.alert('系统提示', "请选择你要" + msg + "的用户！", 'warning');
        return;
    }
    $.messager.confirm('系统提示', '确定要' + msg + arr.length + '条用户信息吗？', function (param) {
        if (!param) {
            return;
        }
        var userarry = [];
        for (var i = 0; i < arr.length; i++) {
            var user = new Object();
            user.id = arr[i].id;
            user.isLock = isLock;
            user.email = arr[i].email;
            userarry.push(user);
        }
        if (isNull(userarry)) {
            return;
        }
        $.messager.progress({text: '正在处理中...',});
        $.ajax({
                type: "post",
                url: system + "/userInfo/updateIsLock",
                dataType: "json",
                data: {
                    userarry: JSON.stringify(userarry)
                },
                success: function (data) {
                    $.messager.progress('close');
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    $("#dg").datagrid("load");//刷新表格
                    $.messager.show({title: '系统提示', msg: data.message});
                }, error: function (data) {
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        );

    });
}


// 重置密码
function resetPassword() {
    var arr = $('#dg').datagrid('getSelections');
    if (null == arr || arr.length == 0) {
        $.messager.alert('系统提示', "请选择你要重置密码的用户！", 'warning');
        return;
    }
    $.messager.confirm('系统提示', '确定要重置' + arr.length + '条用户的密码吗？', function (param) {
        if (!param) {
            return;
        }
        var ids = [];
        for (var i = 0; i < arr.length; i++) {
            ids.push(arr[i].id);
        }
        if (isNull(ids)) {
            return;
        }
        $.messager.progress({text: '正在处理中...',});
        $.ajax({
                type: "post",
                dataType: "json",
                url: system + "/userInfo/resetPassword",
                data: {
                    ids: JSON.stringify(ids)
                },
                success: function (data) {
                    $.messager.progress('close');
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    $("#dg").datagrid("load");//刷新表格
                    $.messager.show({title: '系统提示', msg: data.message});
                }, error: function (data) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        );

    });


}


//点击角色管理按钮事件
function editUserRole() {
    var arr = $('#dg').datagrid('getSelections');
    if (null == arr || arr.length != 1) {
        $.messager.alert('系统提示', "请选择一行数据！", 'warning');
        return;
    }
    $('#dlgRole').dialog({
        title: "用户角色信息管理",
        buttons: [{
            text: '保存',
            iconCls: 'icon-save',
            handler: function () {
                saveUserRole();
            }
        }, {
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlgRole').dialog('close');
            }
        }
        ]
    }).dialog('open');
    //加载用户角色信息列表
    getUserRoleDg(arr[0].orgId, arr[0].id);
}

//加载用户角色信息列表
function getUserRoleDg(orgId, userId) {
    $("#userId").val(userId);
    $('#dgRole').datagrid({
        queryParams: {
            orgId: orgId,
            userId: userId
        },
        loadMsg: '数据加载中，请稍后...',
        url: system + '/userInfo/queryRoleListByOrgId',
        singleSelect: false,//如果为true，则只允许选择一行。
        checkOnSelect: true,//当用户点击行的时候该复选框就会被选中或取消选中。
        striped: true,//是否显示斑马线效果。
        rownumbers: true,// 显示一个行号列
        fitColumns: false,//真正的自动展开/收缩列的大小，以适应网格的宽度，防止水平滚动。
        frozenColumns: [[
            {field: "id", title: "角色id", hidden: true}]],
        columns: [[
            {field: 'itemid', title: 'Order ID', width: 80, checkbox: true},
            {field: 'name', title: '角色名称'},
            {field: 'strOrgName', title: '所属机构'},
            {field: 'description', title: '角色说明'},
            {field: 'strType', title: '角色类型'},
            {field: 'strStatus', title: '角色状态'}
        ]],
        onLoadSuccess: function (data) {
            if (0 == data.total) {
                showEmpty($(this))
            }
            $.each(data.rows, function (index1, item1) {
                $.each(data.listRoleId, function (index2, item2) {
                    if (item1.id == item2.roleId) {
                        $('#dgRole').datagrid('checkRow', index1);
                    }
                });
            });
        }, loadFilter: function (data) { //加载后台数据
            if (successcode != data.code) {
                return errorHandle(data);
            }
            return data.data;
        }
    }).datagrid("columnMoving");;
}

//点击角色管理页面保存按钮
function saveUserRole() {
    var arr = $('#dgRole').datagrid('getSelections');
    if (null == arr || arr.length == 0) {
        $.messager.alert('系统提示', "用户必须有一个角色！", 'warning');
        return;
    }
    $.messager.confirm('系统提示', '确定保存用户的角色信息吗？', function (param) {
        if (!param) {
            return;
        }
        var userrolearry = [];
        for (var i = 0; i < arr.length; i++) {
            var userrole = new Object();
            userrole.roleId = arr[i].id;
            userrole.userId = $("#userId").val();
            userrolearry.push(userrole);
        }
        if (isNull(userrolearry)) {
            return;
        }
        $.messager.progress({text: '正在处理中...',});
        $.ajax({
                type: "post",
                url: system + "/userInfo/updateUserRole",
                dataType: "json",
                data: {
                    userrolearry: JSON.stringify(userrolearry)
                },
                success: function (data) {
                    $.messager.progress('close');
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    $('#dlgRole').dialog('close');//关闭弹出窗口
                    $.messager.show({title: '系统提示', msg: data.message});
                }, error: function (data) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        );
    });

}

//导出 execl文件
function exprotFile() {
    var options = $("#dg").datagrid("getPager").data("pagination").options;
    var totalCount = options.total;
    var confirMsg = '共有' + totalCount + '条数据，导出可能较慢，请耐心等候';
    if (totalCount * 1 >= 10000) {
        confirMsg = '共有' + totalCount + '条数据，导出可能较慢，建议必要筛选后再导出。是否继续导出？';
    }
    $.messager.confirm('系统提示', confirMsg, function (param) {
        if (!param) {
            return;
        }
       // $.messager.progress({text: '正在处理中...',});
        $('#tabfrom').form('submit', {
            url: system + "/userInfo/userexport",
            onSubmit: function (param) {
                //验证表单信息
                param.loginId = $("#loginId").val();
                param.orgId = getCommbotreeValue("selOrgId");
                param.name = $("#name").val();
                param.status = $("#selStatus").combobox("getValue");
            }, success: function (data) {
               // $.messager.progress('close');
                data = JSON.parse(data);
                $.messager.show('系统提示', data.message);
            }, error: function (data) {
               // $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        });
        $.messager.progress('close');
    });
}

$.extend($.fn.validatebox.defaults.rules, {
    loginId: {
        validator: function (value, param) {
            //修改页面，没有修改也提示存在的问题
            var loginId = $("#" + param[0]).val();
            if (value == loginId) {
                return true;
            }
            return checkUserLoginId(value)
        },
        message: '{1}'
    }
});


/**
 * 检查用户登录id是否存在
 * @lsetlist loginId
 */
function checkUserLoginId(loginId) {
    var falg = true;
    $.ajax({
        url: system + "/userInfo/checkUserLoginId",
        method: 'post',
        async: false,
        data: {
            "newloginId": loginId
        },
        success: function (data) {
            if (successcode != data.code) {
                return errorHandle(data);
            }
            if (data.data == false) {
                falg = false;//标识已经存在
            }
        }, error: function (data) {
            $.messager.progress('close');
            $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
        }
    });
    return falg;
}
